package servlets;

import bean.evento;
import bean.tipo;
import bean.lugar;
import bean.usuario;
import dao.d_evento;
import dao.d_lugar;
import dao.d_tipoEvt;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.swing.JOptionPane;

/**
 *
 * @author May
 */
@WebServlet(name = "SEvento", urlPatterns = {"/SEvento"})
public class SEvento extends HttpServlet {

    /**
     * Processes requests for both HTTP
     * <code>GET</code> and
     * <code>POST</code> methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException, SQLException {
       response.setContentType("text/html;charset=UTF-8");
       PrintWriter out = response.getWriter();
       String accion=request.getParameter("accion");
      
       if(accion.equalsIgnoreCase("RegEvento")){
            if(this.registrarEventoGeneral(request, response)==true){
                out.print("<script>alert('Se registro la operacion'); </script>");
            }else{ out.print("<script>alert('NO se pudo crear el registro'); location.href='Agenda.jsp'</script>");
            }
        }else
           if(accion.equalsIgnoreCase("RegSesion")){
            if(this.registrarSesion(request, response)==true){
                out.print("<script>alert('Se registro la sesion'); location.href='Agenda.jsp'</script>");
            }else{ out.print("<script>alert('NO se pudo crear la sesion'); location.href='index.jsp'</script>");
            }
        }
    }

     public boolean registrarEventoGeneral(HttpServletRequest request, HttpServletResponse response) throws IOException, SQLException{
            evento mievento= new evento();
            lugar milugar=new lugar();
            tipo mitipo=new tipo();
            
            milugar.setDescripcion(request.getParameter("txtdescrip"));
            milugar.setDireccion(request.getParameter("txtdir"));
            milugar.setNumero(request.getParameter("txtnum"));
            mitipo.setTipo(request.getParameter("txttipo"));
            mievento.setDescripcion(request.getParameter("txtitulo"));
            mievento.setFecha(request.getParameter("txtfecha"));
            mievento.setHora(request.getParameter("txthora"));
            mievento.setMillugar(milugar);
            mievento.setMitipo(mitipo);
                      
           try {//declaro 3 daos 
            d_tipoEvt baseTipoEvento=new d_tipoEvt();
            d_lugar baseLugar=new d_lugar();
            d_evento baseEvento=new d_evento();
            
            //se guarda primero el lugar y el tipo como objetos independientes en la DB
            baseLugar.registrarLugarEvento(milugar);
           // baseEvento.registrarTipoEvento(mitipo);
            //aqui busco las ides para poder mandar a guardar en la tabla de EVENTO (Ya que me pide las ides, y como se guardo sin ides, pues las busco por nombres a lugar y tipo)
            milugar.setId(baseLugar.buscarIdLugar(milugar.getDescripcion()));
            mitipo.setId(baseTipoEvento.buscarIdTipo(mitipo.getTipo()));
           
            //aqui si mando a registrar el EVENTO
            baseEvento.registrarEvento(mievento);  
            return true;
            }
            catch (SQLException ex) {
            Logger.getLogger(SEvento.class.getName()).log(Level.SEVERE, null, ex);
            JOptionPane.showMessageDialog(null, ex.getMessage());
           return false;
            }  
        }
     
        public boolean registrarSesion(HttpServletRequest request, HttpServletResponse response) throws IOException, SQLException, ServletException{
            usuario miusuario= new usuario();
            miusuario.setUsuario((request.getParameter("txtUser")));
            miusuario.setPassw(request.getParameter("txtPass"));
            boolean busco=miusuario.buscarLogeo(miusuario.getUsuario(), miusuario.getPassw());
            if (busco == false) {  
               return false;
            }else{
              request.setAttribute("busuario", miusuario);
              request.getRequestDispatcher("Agenda.jsp").forward(request, response);      
            return true;
            }
        }
            
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        try {
            processRequest(request, response);
        } catch (SQLException ex) {
            Logger.getLogger(SEvento.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        try {
            processRequest(request, response);
        } catch (SQLException ex) {
            Logger.getLogger(SEvento.class.getName()).log(Level.SEVERE, null, ex);
            System.out.println(ex.getMessage());
        }
    }

    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}